package com.itlong.cloud.operate.service;

import com.itlong.cloud.POJO.DTO.operate.OperateAssessFunctionDTO;
import com.itlong.cloud.POJO.VO.operate.OperateAssessFunctionVO;
import com.itlong.cloud.POJO.VO.operate.OperateGetRoleMenuVO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-报价系统资源菜单业务处理接口
 * </desc>
 *
 * @createDate2020/6/8
 **/
public interface IOperateAssessFunctionService {


    /**
     * <desc>
     *      分页获取报价菜单
     * </desc>
     *
     * @param operateAssessFunctionDTO 报价菜单DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2020/6/9
     */
    Page<OperateAssessFunctionVO> getPage(OperateAssessFunctionDTO operateAssessFunctionDTO) throws Exception;

    /**
     * <desc>
     *      获取单个报价菜单
     * </desc>
     *
     * @param operateAssessFunctionDTO 报价菜单DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2020/6/9
     */
    OperateAssessFunctionVO getOne(OperateAssessFunctionDTO operateAssessFunctionDTO) throws Exception;

    /**
     * <desc>
     *      获取子节点
     * </desc>
     *
     * @param operateAssessFunctionDTO 报价菜单DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2020/6/9
     */
    List<OperateAssessFunctionVO> getChild(OperateAssessFunctionDTO operateAssessFunctionDTO) throws Exception;

    /**
     * <desc>
     *      更改菜单状态
     * </desc>
     *
     * @param operateAssessFunctionDTO 报价菜单DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2020/6/9
     */
    Integer updateStatus(OperateAssessFunctionDTO operateAssessFunctionDTO) throws Exception;

    /**
     * <desc>
     *      保存操作
     * </desc>
     *
     * @param operateAssessFunctionDTO 报价菜单DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2020/6/9
     */
    Integer save(OperateAssessFunctionDTO operateAssessFunctionDTO) throws Exception;

    /**
     * <desc>
     *      更新菜单
     * </desc>
     *
     * @param operateAssessFunctionDTO 报价菜单DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2020/6/9
     */
    Integer update(OperateAssessFunctionDTO operateAssessFunctionDTO) throws Exception;


    /**
     * <desc>
     *      删除功能
     * </desc>
     *
     * @param operateAssessFunctionDTO 报价菜单DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2020/6/16
     */
    Integer delete(OperateAssessFunctionDTO operateAssessFunctionDTO) throws Exception;

    /**
     * <desc>
     *      获取当前节点所有同级节点
     * </desc>
     *
     * @param parent
     * @return
     * @Author Zhu.yj
     * @createDate  2020/6/16
     */
    List<Map<String, Object>> getParentLevelFunctions(String parent) throws Exception;

    /**
     * <desc>
     *      获取角色菜单
     * </desc>
     *
     * @param roleId 角色id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/6/22
     */
    List<OperateGetRoleMenuVO> getRoleMenus(String roleId);
}
